DOORS report in dicey situation

I'm going to go into detail on this as my friend Louie says
I don't usually provide enough information in my questions.

I was hired last month by an employer who says they want me
to help them get their DOORS database in shape.
The person that hired me is opposed by others in the company
who have administrative privilege over the database and don't want
to change their method of doing business.
I don't have anything but Read privileges.

The company, to date, has used DOORS as a glorified word
processor. What does this mean? Well they have
a peculiar way of showing traceability. We have Doc A, the parent,
and Doc B which should be upwardly linked to Doc A.
This employer/customer has, instead, chosen to establish
a dedicated attribute in Doc B that, for each requirement,
contains the object IDs in Doc A to which it should be traced.

Now, the guy who hired me wants a report that contains
requirements from Doc B, followed in subsequent lines
by all the Doc A requirements that are referenced in this
dedicated attribute.

So, I need to access, sometimes hundreds, of objects in Doc A
by using the object ID. I've looked through DXL documentation
to determine if there's a built in function that will return
information on an object when you give an object ID.
I see none; the only way I can think of managing is to
loop through Doc A to find each object. This would take
forever. The guy who wants this report says he doesn't
care if the DXL script has to run overnight, but every atom
of my being says this is just stupid, stupid, stupid!

I don't anticipate being able to talk the current administrators
of DOORS into making upward DOORS links.

So, to reiterate, how do I use the attribute in Doc B which contains
Doc A object IDs to pull information out of Doc A?

Did I mention that all my established performance objectives center
around what I am able to do to "fix" the database?

If this is not clear, I apologize...you can't hurt my feelings
on this one. It's a frustrating situation. Please ask
for any/all clarifications.

Thanks.

Tara
tlwtheq - Thu Jun 21 07:38:46 EDT 2012

Re: DOORS report in dicey situation
LindyEd - Thu Jun 21 09:08:00 EDT 2012

It sounds like you know the Module and Absolute numbers of the objects you need information from so I think all you need is the following from the "Finding Objects" section of DXL Help:

object(absno)

Declaration

Object object(int absno,Module m)

Operation
Returns the object with the specified absolute number. If no module argument is supplied, the current module is searched.

Then just read whatever attribute you need from that object.

Re: DOORS report in dicey situation
tlwtheq - Thu Jun 21 09:13:03 EDT 2012

LindyEd - Thu Jun 21 09:08:00 EDT 2012
It sounds like you know the Module and Absolute numbers of the objects you need information from so I think all you need is the following from the "Finding Objects" section of DXL Help:

object(absno)

Declaration

Object object(int absno,Module m)

Operation
Returns the object with the specified absolute number. If no module argument is supplied, the current module is searched.

Then just read whatever attribute you need from that object.

Bingo! Thanks!

Re: DOORS report in dicey situation
OurGuest - Thu Jun 21 09:14:08 EDT 2012

Tara, if you mean object ID to be the identifier of the object, you don't have to loop thru the document.

Just strip off the prefix and you have the absolute number.

Then use that number to return the object.
Below is some code that you can adapt to your situation.

Object o=current
string s="EXAMPLE-3"
s=s[8:]
print s
int i =intOf s
Module m=current
o = object(i,m)
if(!null o) current = o

Re: DOORS report in dicey situation
Peter_Albert - Thu Jun 21 10:56:33 EDT 2012

OurGuest - Thu Jun 21 09:14:08 EDT 2012

Tara, if you mean object ID to be the identifier of the object, you don't have to loop thru the document.

Just strip off the prefix and you have the absolute number.

Then use that number to return the object.
Below is some code that you can adapt to your situation.

Object o=current
string s="EXAMPLE-3"
s=s[8:]
print s
int i =intOf s
Module m=current
o = object(i,m)
if(!null o) current = o

Just keep in mind that Object (int absNum, Module mod) only finds visible Objects, if it return null where it shouldn't then ensure that filtering is off for the Module in question.

Regards,

Peter

Re: DOORS report in dicey situation
kbmurphy - Thu Jun 21 12:22:17 EDT 2012

Peter_Albert - Thu Jun 21 10:56:33 EDT 2012
Just keep in mind that Object (int absNum, Module mod) only finds visible Objects, if it return null where it shouldn't then ensure that filtering is off for the Module in question.

Regards,

Peter

Or you could, you know, maybe, use this code to actually create links, and then, possibly show them how links enable use of the analysis wizard dynamically and won't be prone to weird situations in your code like when an object in Module A is deleted and nothing is displayed for that object. In fact, with a link, the object in Module A can't be deleted. And they can learn how they won't even need someone to write DXL in the first place and could have had this functionality from the beginning if they had just, you know, learned to use the tool.

Or you could sit back and pull your hair out enabling a growing populace of ignorant users.

Re: DOORS report in dicey situation
llandale - Thu Jun 21 13:38:35 EDT 2012

My old friend!

First I'll comment on some of the nuances of the other responses, then tell you what I did.

  • Converting ObjID to AbsNo is easy, if you know which other module exactly is being referenced. Get that other module's "Prefix" and remove it from each ObjID, and you have the AbsNo. e.g. ObjID A_22 is AbsNo "22" if the other module's prefix is "A_".
  • Converting is trickier if you don't exactly know the other Module's name; but you figure to use the Prefix to figure it out. So ObjID "A_22" can reasonably be split into "A_" and "22", and then you use "A_" to find the other module. However, if you don'[t use "_" or "-" or some other character as the last character of all Prefixes, you have a problem. e.g. "A22" could be "A"/"22" and could also be "A2"/"2". "A202": well, AbsNo NEVER starts with "0" so "A2"/"02" is not correct.
  • function "object" only finds objects that are currently displayed. You will then have to adjust the view in the other module, presumably load the "Standard view", in order to make sure you find all the objects.


I have an Attr-DXL that keys on "Equipment-ID" but lets say it keys on ObjID. The Attr-DXL opens the other module, gets a skip list of all ObjID and Object handles, then plows through the current module finding the reference, finding the other Object (if any), and displays whatever info it wants; delete the Skip after the loop. This Attr-DXL violates my own notion of only displaying then "current" object; when it fires for any object it calcualtes Every Object; and thus only actually runs once.

 

mCurr  = module(obj)
mOther = read other module
Skip  skpOther = createString()
for oOther in entire mOther do
{  if (isDeleted(oOther)) continue
   if (oOther doesn't qualify) continue
   put(skpOther, identifier(oOther), oOther)
}
for oCurr in entire mCurr do
{  if (isDeleted(oCurr)) continue
   if (oCurr doesn't qualify) continue
   ObjIdOther = oCurr."MyOtherReference"
   if (!find(skpOther, ObjIdOther, oOther)) //
   then Results = ""
   else Results = whatever I want from (oOther)
   oCurr.attrDXLName = Results
}
delete(skpOther)



An on-demand script would do the same thing.

-Louie



 

Re: DOORS report in dicey situation
tlwtheq - Thu Jun 21 14:03:25 EDT 2012

llandale - Thu Jun 21 13:38:35 EDT 2012

My old friend!

First I'll comment on some of the nuances of the other responses, then tell you what I did.

  • Converting ObjID to AbsNo is easy, if you know which other module exactly is being referenced. Get that other module's "Prefix" and remove it from each ObjID, and you have the AbsNo. e.g. ObjID A_22 is AbsNo "22" if the other module's prefix is "A_".
  • Converting is trickier if you don't exactly know the other Module's name; but you figure to use the Prefix to figure it out. So ObjID "A_22" can reasonably be split into "A_" and "22", and then you use "A_" to find the other module. However, if you don'[t use "_" or "-" or some other character as the last character of all Prefixes, you have a problem. e.g. "A22" could be "A"/"22" and could also be "A2"/"2". "A202": well, AbsNo NEVER starts with "0" so "A2"/"02" is not correct.
  • function "object" only finds objects that are currently displayed. You will then have to adjust the view in the other module, presumably load the "Standard view", in order to make sure you find all the objects.


I have an Attr-DXL that keys on "Equipment-ID" but lets say it keys on ObjID. The Attr-DXL opens the other module, gets a skip list of all ObjID and Object handles, then plows through the current module finding the reference, finding the other Object (if any), and displays whatever info it wants; delete the Skip after the loop. This Attr-DXL violates my own notion of only displaying then "current" object; when it fires for any object it calcualtes Every Object; and thus only actually runs once.

 

mCurr  = module(obj)
mOther = read other module
Skip  skpOther = createString()
for oOther in entire mOther do
{  if (isDeleted(oOther)) continue
   if (oOther doesn't qualify) continue
   put(skpOther, identifier(oOther), oOther)
}
for oCurr in entire mCurr do
{  if (isDeleted(oCurr)) continue
   if (oCurr doesn't qualify) continue
   ObjIdOther = oCurr."MyOtherReference"
   if (!find(skpOther, ObjIdOther, oOther)) //
   then Results = ""
   else Results = whatever I want from (oOther)
   oCurr.attrDXLName = Results
}
delete(skpOther)



An on-demand script would do the same thing.

-Louie



 

Louie! Cool!

That is exactly what I had in mind once I get the authority to start doing stuff.
Thanks for contributing!
Tara

Re: DOORS report in dicey situation
tlwtheq - Thu Jun 21 14:07:08 EDT 2012

kbmurphy - Thu Jun 21 12:22:17 EDT 2012
Or you could, you know, maybe, use this code to actually create links, and then, possibly show them how links enable use of the analysis wizard dynamically and won't be prone to weird situations in your code like when an object in Module A is deleted and nothing is displayed for that object. In fact, with a link, the object in Module A can't be deleted. And they can learn how they won't even need someone to write DXL in the first place and could have had this functionality from the beginning if they had just, you know, learned to use the tool.

Or you could sit back and pull your hair out enabling a growing populace of ignorant users.

>>In fact, with a link, the object in Module A can't be deleted. And they can learn how they won't even need someone to >>write DXL in the first place and could have had this functionality from the beginning if they had just, you know, learned >>to use the tool.

>>Or you could sit back and pull your hair out enabling a growing populace of ignorant users.

Oh I'm doing plenty of that! I just don't know why they hired a DOORS person if they
wanted to keep on doing what they do. You should see the way they store and export
System Specs. The whole spec is exported as a Word table. Fixing it after the export
is U-G-L-Y. I worked for this company before at another location...I thought those people
were smart. Don't know about here.

Re: DOORS report in dicey situation
kbmurphy - Thu Jun 21 15:12:30 EDT 2012

tlwtheq - Thu Jun 21 14:07:08 EDT 2012
>>In fact, with a link, the object in Module A can't be deleted. And they can learn how they won't even need someone to >>write DXL in the first place and could have had this functionality from the beginning if they had just, you know, learned >>to use the tool.

>>Or you could sit back and pull your hair out enabling a growing populace of ignorant users.

Oh I'm doing plenty of that! I just don't know why they hired a DOORS person if they
wanted to keep on doing what they do. You should see the way they store and export
System Specs. The whole spec is exported as a Word table. Fixing it after the export
is U-G-L-Y. I worked for this company before at another location...I thought those people
were smart. Don't know about here.

Just remember--you do have authority. They hired you to be a DOORS Administrator. That is not the same as "you do exactly what we tell you to do".

Do this work for them and gain their trust, but tell them you can easily make links for them and tell them why.

If they won't listen to you after you show them how to work better...do you really want the job?

I have all sorts of clients, and sometimes they don't listen to my recommendations. That's fine. However, this post exists because these users don't want to use an out-of-the-box feature that is a core component. It's what the software does! It'd be like limiting MS Word documents to one page each. It only makes life harder.

I'm just saying that if I was in your situation, made my recommendations and a demo, and was still ignored, I would know that I wasn't the right person for the position.

Good luck.

Re: DOORS report in dicey situation
tlwtheq - Fri Jun 22 10:15:30 EDT 2012

kbmurphy - Thu Jun 21 15:12:30 EDT 2012
Just remember--you do have authority. They hired you to be a DOORS Administrator. That is not the same as "you do exactly what we tell you to do".

Do this work for them and gain their trust, but tell them you can easily make links for them and tell them why.

If they won't listen to you after you show them how to work better...do you really want the job?

I have all sorts of clients, and sometimes they don't listen to my recommendations. That's fine. However, this post exists because these users don't want to use an out-of-the-box feature that is a core component. It's what the software does! It'd be like limiting MS Word documents to one page each. It only makes life harder.

I'm just saying that if I was in your situation, made my recommendations and a demo, and was still ignored, I would know that I wasn't the right person for the position.

Good luck.

>>If they won't listen to you after you show them how to work better...do you really want the job?

Thanks for the pep talk; I'm already there (as far as not wanting the job).
Unfortunately I can't quit until I have another job. Meanwhile, I'll keep
your words in mind and do my best.

Re: DOORS report in dicey situation
SamLund - Tue Jun 26 10:16:58 EDT 2012

tlwtheq - Fri Jun 22 10:15:30 EDT 2012
>>If they won't listen to you after you show them how to work better...do you really want the job?

Thanks for the pep talk; I'm already there (as far as not wanting the job).
Unfortunately I can't quit until I have another job. Meanwhile, I'll keep
your words in mind and do my best.

Typically organisations, where tools are introduced without sufficient user training and support, can end up like the one you described. It is a dire situation - not for you - but the actual users. On the other hand, I understand your frustration on rather limited capacity offered by the current access profile.

On the other hand, this can really easily turned into your favor, and offers multiple opportunities, to not only to gain their trust and mutual loyalty, but to engage in improving their productivity, business practices/processes, and thus even offers wider perspectives to the seemingly spartan starting points.

And I think, such character building exercise, may be at some times good to have. It makes one grow tighter together with the local team, if you start rock bottom up.

Since you observed already several areas, where basic DOORS routines are not exploited, you might device a simple presentation and training package, showing which benefits and gains in productivity, some of the unused features and opportunities (dxl-based in times) can offer. That including, the effort and cost for performing such modifications (and user training).

This might sound simple, but the fact is, that also introduces (not least for them) a way of thinking which seldomly finds its way to even best achieving organisations. Tools and their use are not put into context of cost/performance/value, and in those terms, you cannot but win (of all I can read here). This capacity to provide cross-domain, more management relevant insights, should be sufficient to create their confidence on yourself not being only a "door keeper", but someone which can appreciate technology in a business context, and who knows its capabilities and opportunities - which in this case - is DOORS.

As I would see it, the glass is absolutely half full!